package com.yc.thread;

//通过isInterrupted()检测此线程 是否中断，但不会清除中断状态
public class Test7_isInterrupted {
    public static void main(String[] args) {
        //当前进程
        Thread thread =Thread.currentThread();
        //检测当前线程是否被中断
        System.out.println(thread.getName()+"线程是否中断"+thread.isInterrupted());//false
        //TODO:测试这句话设置线程中断标识
        thread.interrupt();//发送一个中断信号
        //检测当前线程是否被打断
        System.out.println(thread.getName()+"线程是否中断"+thread.isInterrupted());//true
        //检测线程中断状态是否被清除
        System.out.println(thread.getName()+"线程是否中断"+thread.isInterrupted());//true
        try{
            //线程休眠2s
            Thread.sleep(2000); //本来在main线程中休眠2s的   但因为interrupt()被调用了
            System.out.println(thread.getName()+"线程休眠未被中断");
        }catch (Exception e){  //异常捕获操作也会恢复中断信号
            //捕捉到sleep被打断异常
            e.printStackTrace();
            System.out.println(thread.getName()+"线程休眠被中断。。。");
            //判断线程是否被中断，因为异常已经处理完 ，所以状态恢复    扩展：在catch写处理代码
            System.out.println(thread.getName()+"线程是否被中断"+thread.isInterrupted());//false
        }
        System.out.println(thread.getName()+"线程是否被中断"+thread.isInterrupted());//false
    }
}
